Analítica de datos aplicada a estudios sobre desarrollo

Introducción a los métodos cuantitativos

Sobre Mi

PhD en Estadística, MSc en Analytics & Big Data, MSc en Estadística. Con 20 años de experiencia, actual director de analítica en el CNC, miembro del comité de expertos en pobreza en el DANE y consultor de la División de Estadística de la CEPAL. Ex-decano de la Facultad de Estadística USTA, ex-director de operaciones en el ICFES, PM CEV …

Puedes encontrarme en:

Objetivos de este curso

  1. Familiarizar a los estudiantes en el uso de herramientas para el análisis cuantitativo de datos aplicada a los estudios de desarrollo.

  2. Presentar las cuestiones prácticas y críticas en el uso de métodos de análisis cuantitativo de datos.

Resultados de aprendizaje

Al finalizar el curso, los y las estudiantes estarán en capacidad de:

  • Aplicar los principales métodos de análisis cuantitativo (análisis de regresión, técnicas de análisis multivariado).

  • Combinar distintas herramientas para el análisis cuantitativo.

Metodología

  • Es un curso de nivel intermedio donde se abordan temas de métodos descriptivos, inferenciales, métodos supervisados y no supervisados.

  • El enfoque del curso es práctico, a través de ejercicios hechos con los estudiantes. Usaremos el software estadístico R Studio. No nos concentraremos en demostraciones y pruebas formales. El curso tiene un énfasis aplicado.

  • Sesiones de repaso y aclaración de inquietudes con el Monitor alternadas semanalmente con nuestras sesiones.

Temas que se cubren



  1. Visualización de datos
  2. Análisis exploratorio
  3. Análisis de correlación y de regresión (modelos lineales)
  4. Reducción de la dimensionalidad
  5. prácticas en el software R Studio

Reglas del juego


  • Talleres: 30%
  • Examen 1: 20%.
  • Examen 2: 20%.
  • Presentación final: 30%



Conversación



¿Por qué considera que la analítica de los datos es importante dentro del proceso de la toma de decisiones o de orientación de políticas?

INFORMACIÓN + CONVERSACIÓN + ACCIÓN = TRANSFORMACIÓN

05:00

VISUALIZACIÓN DE DATOS

Elementos clave

  • Tipografía: Seleccione fuentes apropiadas, limitándose a 2-3 y siendo consistente en su uso.
  • Contraste: Utilizar contraste (claro/oscuro, grande/pequeño, grueso/delgado) para resaltar y enfatizar.
  • Color: Usar el color para enfatizar o reforzar valores, evitando el uso excesivo de colores que pueda distraer.
  • Balance: Asegurar que el diseño sea visualmente equilibrado para que sea agradable y destaque la información importante.
  • Jerarquía: Proporcione pistas visuales sobre la parte más importante del mensaje.

Elementos clave

  • Despejar el gráfico: Elimine líneas, bordes y marcas de verificación innecesarias para evitar distracciones.
  • Títulos y etiquetas con propósito: Ser claro y conciso en los títulos y usar etiquetas de datos con moderación.
  • Usar el eje completo comenzando en cero para evitar malinterpretaciones de los datos.
  • Evite gráficos de pastel especialmente para comparaciones, ya que son difíciles de interpretar visualmente.

Lectura recomendada: Data Visualization Principles

Tipos de gráficos

Galerias de gráficos en R: https://r-graph-gallery.com/

Inspiración


SOFTWARE R

Proceso de analítica

Wickham, H. y otros (2023)

Paquete R

  • Paquete de uso libre

  • Tiene todos los métodos que necesitamos

  • Incluye paquetes específicos para la visualización como ggplot2, Plotly, esquisse, tidyplots, etc

R logo

Etapas del proceso

Paquete estadístico

Arte de Allison Horst

R y R-Studio

Arte de Allison Horst

Trabajando en R

El entorno tidyverse

Flujo de trabajo

instalación



Reglas de los datos



Tipos de variables

Tipos de variables

Comandos iniciales: estructura

Existen varias formas de observar la estructura de los datos

Los comandos head, str, names son del paquete base mientras que glimpse es del entorno tidyverse.

Gramática de la gráficas

Ejemplo: Visualización de datos

Cree el proyecto: PIB

library(pacman)
p_load(tidyverse, gganimate, gapminder, gifski)

datos <- gapminder |> 
         filter(year >= 1952) |> 
         mutate(poblacion = pop / 1e6)

paises_interes <- c("Colombia", "United States", "China", "India", "Nigeria")


Explore el conjunto de datos

Ejemplo: Visualización de datos

g1 <- ggplot(datos, aes(x = gdpPercap, y = lifeExp, size = poblacion, color = continent)) +
      geom_point(alpha = 0.7, show.legend = TRUE) +
      geom_text(data = datos |> filter(country %in% paises_interes), 
                aes(label = country), size = 4, vjust = -1, hjust = 0.5, color = "black", alpha = 0.8) +
      scale_x_log10(labels = scales::dollar_format(prefix = "$")) +
      scale_y_continuous(labels = scales::comma) +
      labs(title = "Relación entre PIB per cápita y la esperanza de vida",
           subtitle = "Año: {frame_time}",
           x = "PIB per cápita (log10)",
           y = "Esperanza de vida",
           size = "Población (millones)",
           color = "Continente") +
       theme_minimal(base_size = 14) +
       theme(legend.position = "bottom") +
       transition_time(year) +
       ease_aes('linear')

#anim <- animate(plot, fps = 20, duration = 10, width = 800, height = 600, renderer = gifski_renderer())
#anim_save("gapminder_animation.gif", anim)

Ejercicio


Tu turno: Cree un proyecto y cargue el conjunto de datos “ENSIN.sav”, explore los datos y visualice su estructura. Use as_factor() para visualizar las etiquetas.

library(pacman)

p_load(tidyverse, haven, skimr)

url <- "https://github.com/jgbabativam/AnaDatos/raw/main/datos/ENSIN.sav"
ensin <- read_sav(url)
15:00

La etapa de la frustración

Arte de Allison Horst

La IA como herramienta

Estamos en un mundo de constante evolución, ¿la IA nos va a reemplazar?

  • Enviar una carta en papel por correo
  • Pedir un domicilio por teléfono
  • Solicitar un taxi por teléfono
  • Orientarse en una ruta con un mapa de papel



@tiangolo

Imagen de Caracol Radio

GPT y Modelos LLMs

El GPT (Generative Pre-trained Transformer) es un modelo de LLM (Large Language Model). Mientras que GPT-3 usaba 175 MM de parámetros usando modelos soportados en texto, GPT-4 usa 100 BN de parámetros usando modelos soportados en texto e imágenes.

Instrucciones

No pretenda que todo ocurra en un solo paso, a veces se obtienen mejores resultados precisando un prompt en cada paso.

@mdancho84

Herramientas

Ejemplo

Escriba el siguiente prompt en ChatGPT y transcriba el código a R:



“use el paquete osm de R para crear un mapa y la base de datos de droguerias en bogotá, luego use mapview para visualizar las droguerias”

Ejercicio


Tu turno: Sobre el conjunto de datos “ENSIN.sav”, apoyese en la IA para obtener un gráfico de barras, usando ggplot2, con la cantidad de registros que se tienen de cada región. Ajustelo a su gusto.

g2 <- ensin |> 
      count(region) |> 
      mutate(region = as_factor(region)) |>
      ggplot(aes(x = fct_reorder(region, n), y = n, fill = region)) +
      geom_col() +
      labs(x = "Región", y = "Frecuencia") +
      coord_flip() +
      theme_minimal() +
      theme(legend.position = "none")

Ejercicio


Tu turno: Sobre el conjunto de datos “ENSIN.sav”, apoyese en la IA para obtener un gráfico elegante entre las variables Peso y Estatura, use ggplot2. Ajustelo a su gusto.

Ejercicio


Tu turno: Sobre el conjunto de datos “ENSIN.sav”, apoyese en la IA para obtener un diagrama de cajas elegante que permita comparar la variable IMC entre las diferentes regiones, use ggplot2. Ajustelo a su gusto.

ANÁLISIS EXPLORATORIO

Análisis exploratorio



  1. Tipos de variables.
  2. Visualizar los datos
  3. Identificar relaciones
  4. Datos atípicos
  5. Datos faltantes

Análisis Exploratorio con DataExplorer

Puede realizar una exploración de datos rápido y eficiente, generando resúmenes visuales y estadísticos con muy poco código.


Usemos un conjunto de datos de la ENSIN

library(pacman)
p_load(tidyverse, broom, modelr, 
       patchwork, performance, haven,
       DataExplorer, skimr, corrplot, psych, gt, gtsummary)

Explore los comandos create_report(), glimpse() y skim().

create_report(ensin)
glimpse(ensin)
skim(ensin)

ESTUDIO DE CASO

Violencia contra las mujeres

El estudio de Oxfam y La Casa de la Mujer publicado aquí. La investigación se realizó en el marco de la Campaña “Violaciones y otras Violencias: Saquen mi cuerpo de la guerra”. El estudio se enfocó en zonas donde se tenían alertas tempranas de la Defensoría del Pueblo y tuvo como periodo de referencia los años 2010 a 2014.

library(pacman)

p_load(tidyverse, haven, skimr, DataExplorer)

url <- "https://github.com/jgbabativam/AnaDatos/raw/main/datos/VolenciaMujer.sav"
mujeres <- read_sav(url) |> as_factor()

  • Use lapply(mujeres, function(x) attributes(x)$label) para ver las etiquetas de las preguntas.
  • Use create_report para hacer un análisis exploratorio de los datos.

Reportes reproducibles usando Quarto-R


A schematic representing the multi-language input (e.g. Python, R, Observable, Julia) and multi-format output (e.g. PDF, html, Word documents, and more) versatility of Quarto.

Arte de “Hello, Quarto” por Julia Lowndes y Mine Çetinkaya-Rundel, presentado en RStudio::Conf(2022). Ilustración por Allison Horst.

A schematic representing rendering of Quarto documents from .qmd, to knitr or jupyter, to plain text markdown, then converted by pandoc into any number of output types including html, PDF, or Word document.

Tipos de salidas

Sitios para obtener inspiración Quarto.org gallery y el Qmd Club website & blog showcase

Estructura de un documento .qmd

  1. YAML header (metadatos y opciones del documento)

  2. Narrativa (markdown)

  3. Códigos chunks (importar, depurar, transformar, visualizar)

1. YAML

---
title: Título del documento
author: Giovany Babativa-Márquez
date: "r toupper(format(Sys.time(), '%B %Y'))"
bibliography: docreferences.bib
link-citations: true
toc-title: Tabla de Contenido
lang: es
output:
  bookdown::word_document2:
   reference_docx: docPlantilla.docx
   number_sections: true
   fig_caption: yes
fontsize: 12pt
---

Consulte las opciones disponibles en las guías de referencia: HTML, PDF, MS Word, Revealjs, MS Powerpoint.

2. Narrativa

Sintaxis de Markdown para:

  • Texto con formato: **negrita**negrita

  • Título de secciones: # Header 1, # Header 2

  • Hipervínculos: [google.com](https://google.com)google.com

  • Imágenes: ![](image.png)

  • Código en línea: `{r} Sys.Date()`2025-02-18

  • Ecuaciones: `$E = mc^{2}$`\(E = mc^{2}\)


3. Códigos chunks

Tres manera para insertar chunks:

  1. Atajos Cmd/Ctrl + Option/Alt + I.

  2. Insert Chunk button in RStudio Insert Chunk botón en las herramientas del editor.

  3. Escribir los delimitadores de fragmento ```{r} y ```.

Dos formas de ejecutar los códigos de los chunks:

  1. Use los botones Run Current Chunk o Run All Chunks Above.

    Code chunk in RStudio with the Run All Chunks Above and Run Current Chunk buttons highlighted and labelled.

  2. Ejecutar el código actual del chunk con Cmd/Ctrl + Shift + Enter.

Ejemplo

Use el conjunto de datos de violencia contra las mujeres para construir un informe de muestra, incluya:

  • Secciones y subsecciones
  • Texto con formato (Negrita)
  • Hipervínculo
  • Referencias
  • Gráficos
  • Tablas
  • Ecuaciones

GRACIAS!

Referencias

  • R for data science. Section 3. Data visualization. Disponible aquí

  • Dougherty, J. and Ilyankou, I. (2022) Hands-On Data Visualization. Interactive Storytelling from Spreadsheets to Code. Section 6. Chart Design Principles. Disponible aquí

  • Williams, G. (2022) Data Science Desktop Survival Guide. Togaware. Disponible aquí Chapter 2 introducing R

  • Jadey Ryan. Reproducible reports and presentations with Quarto. Disponible aquí